/*******************************************************************************
 * Copyright (c) 2008 Sylvain Sicard.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * 
 * Contributors:
 *     Noel De Palma - initial API and implementation
 ******************************************************************************/
package fr.jade.reflex.api.control;

import org.objectweb.fractal.api.control.IllegalLifeCycleException;
import org.objectweb.fractal.api.control.LifeCycleController;

/**
 * This interface is used to notify a lifecycle update between the meta and the execution level
 * (and vice versa).
 * @author Noel De Palma
 * @contact noel.depalma@inrialpes.fr
 */
public interface LifeCycleNotificationController extends LifeCycleController{

  /**
   * Start the component to which this interface belongs.
   *
   * @throws IllegalLifeCycleException if the transition from the current state
   *      to the STARTED state is not a valid transition of the
   *      life cycle automaton.
   */

  void startFcNotification () throws IllegalLifeCycleException;
  
  void rawStartFcNotification () throws IllegalLifeCycleException;

  /**
   * Stop the component to which this interface belongs. 
   *
   * @throws IllegalLifeCycleException if the transition from the current state
   *      to the STOPPED state is not a valid transition of the
   *      life cycle automaton.
   */

  void stopFcNotification () throws IllegalLifeCycleException;
  
  void rawStopFcNotification () throws IllegalLifeCycleException;
  
}

